// 深拷贝
function deepCope(obj) {
  // 判断是否为对象或者值为null则直接返回
  if (typeof obj !== "object" || obj === null) {
    return obj;
  }
  // 判断obj是否为数组，如果是则创建一个空数组，否则创建一个空对象
  const newObj = Array.isArray(obj) ? [] : {};
  // 遍历obj的属性
  for (const key in obj) {
    // 判断是否为自身属性
    if (Object.prototype.hasOwnProperty.call(obj, key)) {
      // 递归调用deepCope函数，复制obj的属性值
      newObj[key] = deepCope(obj[key]);
    }
  }
  // 返回复制后的对象或数组
  return newObj;
}

// 原生的深拷贝方法
function baseDeepCope(obj) {
  return structuredClone(obj);
}

// 导出深拷贝函数
export { deepCope, baseDeepCope };
